<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>String Operations [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onLoad="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_tuple.html">Tuple</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<h2>String Operations</h2>
<p><a href="#section_list">List of Operators ↓</a></p>
<p>This chapter contains operators for string operations.
</p>
<h3>General Information</h3>
<p>The HALCON library encodes strings in UTF-8 by default.
</p>
<p>UTF-8 is a Unicode character encoding that can encode all Unicode code points
with one to four bytes.
'Unicode' refers to the character set that assigns each character of a string
to a code point (for example, 'U + 0041' for 'A').  UTF-8 then translates the
Unicode code points into binary data.
The memory requirement for all ASCII characters is usually 1 byte.
Certain characters, such as German umlauts, or Greek and Cyrillic characters
require 2 bytes.  Asian characters occupy up to 4 bytes per character.
</p>
<p>By default, the HALCON string operators work on the basis of Unicode code
points.  That is, accessing a character of a string always returns the
corresponding Unicode code point of the character,
regardless of how many bytes are needed to represent the code point in UTF-8.
Thus, multi-byte characters, such as Asian characters or German umlauts can be
uniformly translated on all systems.  Please note that the Unicode standard
also allows you to assemble printable characters from multiple code points
(using so-called 'Combining Diacritical Marks').
This is currently not fully supported by HALCON: in HALCON, the code points are
processed separately, and when strings are compared, equivalent characters are
not set equal if coded with different code points.
</p>
<p>If there are compatibility problems during execution of older programs, the
string encoding of the HALCON library can be changed from <i><span data-if="hdevelop" style="display:inline"><code>'utf8'</code></span><span data-if="c" style="display:none"><code>"utf8"</code></span><span data-if="cpp" style="display:none"><code>"utf8"</code></span><span data-if="com" style="display:none"><code>"utf8"</code></span><span data-if="dotnet" style="display:none"><code>"utf8"</code></span><span data-if="python" style="display:none"><code>"utf8"</code></span></i> to
<i><span data-if="hdevelop" style="display:inline"><code>'locale'</code></span><span data-if="c" style="display:none"><code>"locale"</code></span><span data-if="cpp" style="display:none"><code>"locale"</code></span><span data-if="com" style="display:none"><code>"locale"</code></span><span data-if="dotnet" style="display:none"><code>"locale"</code></span><span data-if="python" style="display:none"><code>"locale"</code></span></i> (legacy mode).
Then strings are stored depending on the locale and the string operators work –
as in previous versions of HALCON – not characterwise but bytewise.
If bytewise character processing is also required in UTF-8 mode, 该算子
<a href="set_system.html"><code><span data-if="hdevelop" style="display:inline"><code>set_system</code></span><span data-if="c" style="display:none"><code>set_system</code></span><span data-if="cpp" style="display:none"><code>SetSystem</code></span><span data-if="com" style="display:none"><code>SetSystem</code></span><span data-if="dotnet" style="display:none"><code>SetSystem</code></span><span data-if="python" style="display:none"><code>set_system</code></span></code></a> can be used to set the option
<i><span data-if="hdevelop" style="display:inline"><code>'tuple_string_operator_mode'</code></span><span data-if="c" style="display:none"><code>"tuple_string_operator_mode"</code></span><span data-if="cpp" style="display:none"><code>"tuple_string_operator_mode"</code></span><span data-if="com" style="display:none"><code>"tuple_string_operator_mode"</code></span><span data-if="dotnet" style="display:none"><code>"tuple_string_operator_mode"</code></span><span data-if="python" style="display:none"><code>"tuple_string_operator_mode"</code></span></i> from <i><span data-if="hdevelop" style="display:inline"><code>'codepoint'</code></span><span data-if="c" style="display:none"><code>"codepoint"</code></span><span data-if="cpp" style="display:none"><code>"codepoint"</code></span><span data-if="com" style="display:none"><code>"codepoint"</code></span><span data-if="dotnet" style="display:none"><code>"codepoint"</code></span><span data-if="python" style="display:none"><code>"codepoint"</code></span></i> to <i><span data-if="hdevelop" style="display:inline"><code>'byte'</code></span><span data-if="c" style="display:none"><code>"byte"</code></span><span data-if="cpp" style="display:none"><code>"byte"</code></span><span data-if="com" style="display:none"><code>"byte"</code></span><span data-if="dotnet" style="display:none"><code>"byte"</code></span><span data-if="python" style="display:none"><code>"byte"</code></span></i>.
Afterwards, the string operators no longer work on the basis of code points.
The byte sequence of a string can be interesting for debugging, for example.
</p>
<hr>
<h4 id="section_list">算子列表</h4>
<dl>
<dt><a href="tuple_environment.html"><code><span data-if="hdevelop" style="display:inline;">tuple_environment</span><span data-if="dotnet" style="display:none;">TupleEnvironment</span><span data-if="python" style="display:none;">tuple_environment</span><span data-if="cpp" style="display:none;">TupleEnvironment</span><span data-if="c" style="display:none;">tuple_environment</span></code></a></dt>
<dd>Read one or more environment variables.</dd>
</dl>
<dl>
<dt><a href="tuple_join.html"><code><span data-if="hdevelop" style="display:inline;">tuple_join</span><span data-if="dotnet" style="display:none;">TupleJoin</span><span data-if="python" style="display:none;">tuple_join</span><span data-if="cpp" style="display:none;">TupleJoin</span><span data-if="c" style="display:none;">tuple_join</span></code></a></dt>
<dd>Join strings using separator symbol(s).</dd>
</dl>
<dl>
<dt><a href="tuple_regexp_match.html"><code><span data-if="hdevelop" style="display:inline;">tuple_regexp_match</span><span data-if="dotnet" style="display:none;">TupleRegexpMatch</span><span data-if="python" style="display:none;">tuple_regexp_match</span><span data-if="cpp" style="display:none;">TupleRegexpMatch</span><span data-if="c" style="display:none;">tuple_regexp_match</span></code></a></dt>
<dd>Extract substrings using regular expressions.</dd>
</dl>
<dl>
<dt><a href="tuple_regexp_replace.html"><code><span data-if="hdevelop" style="display:inline;">tuple_regexp_replace</span><span data-if="dotnet" style="display:none;">TupleRegexpReplace</span><span data-if="python" style="display:none;">tuple_regexp_replace</span><span data-if="cpp" style="display:none;">TupleRegexpReplace</span><span data-if="c" style="display:none;">tuple_regexp_replace</span></code></a></dt>
<dd>Replace a substring using regular expressions.</dd>
</dl>
<dl>
<dt><a href="tuple_regexp_select.html"><code><span data-if="hdevelop" style="display:inline;">tuple_regexp_select</span><span data-if="dotnet" style="display:none;">TupleRegexpSelect</span><span data-if="python" style="display:none;">tuple_regexp_select</span><span data-if="cpp" style="display:none;">TupleRegexpSelect</span><span data-if="c" style="display:none;">tuple_regexp_select</span></code></a></dt>
<dd>Select tuple elements matching a regular expression.</dd>
</dl>
<dl>
<dt><a href="tuple_regexp_test.html"><code><span data-if="hdevelop" style="display:inline;">tuple_regexp_test</span><span data-if="dotnet" style="display:none;">TupleRegexpTest</span><span data-if="python" style="display:none;">tuple_regexp_test</span><span data-if="cpp" style="display:none;">TupleRegexpTest</span><span data-if="c" style="display:none;">tuple_regexp_test</span></code></a></dt>
<dd>Test if a string matches a regular expression.</dd>
</dl>
<dl>
<dt><a href="tuple_split.html"><code><span data-if="hdevelop" style="display:inline;">tuple_split</span><span data-if="dotnet" style="display:none;">TupleSplit</span><span data-if="python" style="display:none;">tuple_split</span><span data-if="cpp" style="display:none;">TupleSplit</span><span data-if="c" style="display:none;">tuple_split</span></code></a></dt>
<dd>Split strings into substrings using predefined separator symbol(s).</dd>
</dl>
<dl>
<dt><a href="tuple_str_first_n.html"><code><span data-if="hdevelop" style="display:inline;">tuple_str_first_n</span><span data-if="dotnet" style="display:none;">TupleStrFirstN</span><span data-if="python" style="display:none;">tuple_str_first_n</span><span data-if="cpp" style="display:none;">TupleStrFirstN</span><span data-if="c" style="display:none;">tuple_str_first_n</span></code></a></dt>
<dd>Cut the first characters up to position “n” out of a string tuple.</dd>
</dl>
<dl>
<dt><a href="tuple_str_last_n.html"><code><span data-if="hdevelop" style="display:inline;">tuple_str_last_n</span><span data-if="dotnet" style="display:none;">TupleStrLastN</span><span data-if="python" style="display:none;">tuple_str_last_n</span><span data-if="cpp" style="display:none;">TupleStrLastN</span><span data-if="c" style="display:none;">tuple_str_last_n</span></code></a></dt>
<dd>Cut all characters starting at position “n” out of a string tuple.</dd>
</dl>
<dl>
<dt><a href="tuple_strchr.html"><code><span data-if="hdevelop" style="display:inline;">tuple_strchr</span><span data-if="dotnet" style="display:none;">TupleStrchr</span><span data-if="python" style="display:none;">tuple_strchr</span><span data-if="cpp" style="display:none;">TupleStrchr</span><span data-if="c" style="display:none;">tuple_strchr</span></code></a></dt>
<dd>Forward search for characters within a string tuple.</dd>
</dl>
<dl>
<dt><a href="tuple_strlen.html"><code><span data-if="hdevelop" style="display:inline;">tuple_strlen</span><span data-if="dotnet" style="display:none;">TupleStrlen</span><span data-if="python" style="display:none;">tuple_strlen</span><span data-if="cpp" style="display:none;">TupleStrlen</span><span data-if="c" style="display:none;">tuple_strlen</span></code></a></dt>
<dd>Determine the length of every string within a tuple of strings.</dd>
</dl>
<dl>
<dt><a href="tuple_strrchr.html"><code><span data-if="hdevelop" style="display:inline;">tuple_strrchr</span><span data-if="dotnet" style="display:none;">TupleStrrchr</span><span data-if="python" style="display:none;">tuple_strrchr</span><span data-if="cpp" style="display:none;">TupleStrrchr</span><span data-if="c" style="display:none;">tuple_strrchr</span></code></a></dt>
<dd>Backward search for characters within a string tuple.</dd>
</dl>
<dl>
<dt><a href="tuple_strrstr.html"><code><span data-if="hdevelop" style="display:inline;">tuple_strrstr</span><span data-if="dotnet" style="display:none;">TupleStrrstr</span><span data-if="python" style="display:none;">tuple_strrstr</span><span data-if="cpp" style="display:none;">TupleStrrstr</span><span data-if="c" style="display:none;">tuple_strrstr</span></code></a></dt>
<dd>Backward search for strings within a string tuple.</dd>
</dl>
<dl>
<dt><a href="tuple_strstr.html"><code><span data-if="hdevelop" style="display:inline;">tuple_strstr</span><span data-if="dotnet" style="display:none;">TupleStrstr</span><span data-if="python" style="display:none;">tuple_strstr</span><span data-if="cpp" style="display:none;">TupleStrstr</span><span data-if="c" style="display:none;">tuple_strstr</span></code></a></dt>
<dd>Forward search for strings within a string tuple.</dd>
</dl>
<dl>
<dt><a href="tuple_substr.html"><code><span data-if="hdevelop" style="display:inline;">tuple_substr</span><span data-if="dotnet" style="display:none;">TupleSubstr</span><span data-if="python" style="display:none;">tuple_substr</span><span data-if="cpp" style="display:none;">TupleSubstr</span><span data-if="c" style="display:none;">tuple_substr</span></code></a></dt>
<dd>Cut characters from position “n1” through “n2” out of a string tuple.</dd>
</dl>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
